package com.fuqi.framework.utils;

import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.telephony.TelephonyManager;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;

public class SystemUtil {
	
	
    /**
     * 将dip转换为px
     *
     * @param dipValue
     * @return
     */
    public static int dip2px(Context context ,float dipValue) {
            final float scale = context.getResources().getDisplayMetrics().density;
            return (int) (dipValue * scale + 0.5f);
    }

    public static int dip2Pixels(float density, float dipValue) {
		return (int)(dipValue * density + 0.5f);
	}
    
    /**
     * 将px转换为dip
     * @param pxValue
     * @return
     */
    public static int px2dip(Context context , float pxValue) {
            final float scale = context.getResources().getDisplayMetrics().density;
            return (int) (pxValue / scale + 0.5f);
    } 
    
    public static int getWidth(Context context){
    	return context.getResources().getDisplayMetrics().widthPixels;
    	
    	/*DisplayMetrics dm = new DisplayMetrics();  
    	dm = context.getResources().getDisplayMetrics();  
    	  
    	float density  = dm.density;        // 屏幕密度（像素比例：0.75/1.0/1.5/2.0）  
    	int densityDPI = dm.densityDpi;     // 屏幕密度（每寸像素：120/160/240/320）  
    	float xdpi = dm.xdpi;             
    	float ydpi = dm.ydpi;  
    	  
    	Log.e(TAG + "  DisplayMetrics", "xdpi=" + xdpi + "; ydpi=" + ydpi);  
    	Log.e(TAG + "  DisplayMetrics", "density=" + density + "; densityDPI=" + densityDPI);  
    	  
    	screenWidth  = dm.widthPixels;      // 屏幕宽（像素，如：480px）  
    	screenHeight = dm.heightPixels;     // 屏幕高（像素，如：800px）  
    	  
    	Log.e(TAG + "  DisplayMetrics(111)", "screenWidth=" + screenWidth + "; screenHeight=" + screenHeight);  
    	 */ 
    }
    
    public static int getHeight(Context context){
    	return context.getResources().getDisplayMetrics().heightPixels;
    }
    
    /**
	 * 设备是否读到SD卡
	 * 
	 * @return true 能读到SD卡 false无法读到SD卡
	 */
	public static boolean checkSDCard() {
		String strStorageState = android.os.Environment
				.getExternalStorageState();
		if (android.os.Environment.MEDIA_MOUNTED.equals(strStorageState)) {
			return true;
		} else {
			return false;
		}
	}
	/*--------------网络是否打开 start-------------*/
	public static boolean checkNetWorkIsAvailable(Context context) {

		ConnectivityManager cwjManager = (ConnectivityManager) context
				.getSystemService(Context.CONNECTIVITY_SERVICE);
		if (cwjManager.getActiveNetworkInfo() != null)

			return true;
		else

			return false;

	}
	
	/*public static int getAppVersion() {
		Context context = MyApplication.instance();
		String packageName = context.getPackageName();
		try {
			return context.getPackageManager().getPackageInfo(packageName, 0).versionCode;
		} catch (NameNotFoundException e) {
			return 0;
		}
	}*/

    /**
* deviceID的组成为：渠道标志+识别符来源标志+hash后的终端识别符
*
* 渠道标志为：
* 1，andriod（a）
*
* 识别符来源标志：
* 1， wifi mac地址（wifi）；
* 2， IMEI（imei）；
* 3， 序列号（sn）；
* 4， id：随机码。若前面的都取不到时，则随机生成一个随机码，需要缓存。
*
* @param context
* @return
*/
public static String getDeviceId(Context context) {


StringBuilder deviceId = new StringBuilder();
// 渠道标志
deviceId.append("android");

try {

//wifi mac地址
WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo info = wifi.getConnectionInfo();
String wifiMac = info.getMacAddress();
if(!StringUtils.isEmpty(wifiMac)){
deviceId.append("wifi");
deviceId.append(wifiMac);
return deviceId.toString();
}

//IMEI（imei）
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
String imei = tm.getDeviceId();
if(!StringUtils.isEmpty(imei)){
deviceId.append("imei");
deviceId.append(imei);
return deviceId.toString();
}

//序列号（sn）
String sn = tm.getSimSerialNumber();
if(!StringUtils.isEmpty(sn)){
deviceId.append("sn");
deviceId.append(sn);
return deviceId.toString();
}

//如果上面都没有， 则生成一个id：随机码
//String uuid = getUUID(context);
//if(!StringUtil.isEmpty(uuid)){
//deviceId.append("id");
//deviceId.append(uuid);
//return deviceId.toString();
//}
} catch (Exception e) {
e.printStackTrace();
//deviceId.append("id").append(getUUID(context));
deviceId.append("none");
}


return deviceId.toString();

}

	/**
	 * 隐藏系统键盘
	 *
	 * @param
	 *
	 */
	public static void hideSystemKeyboad(Activity activity) {

		InputMethodManager  manager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
		if (!manager.isActive()) {
			return;
		}
		// 判断隐藏软键盘是否弹出
		boolean flag = activity.getWindow().getAttributes().softInputMode == WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE;

		if (!flag) {

			// 隐藏软键盘
			manager.hideSoftInputFromWindow(activity.getCurrentFocus()
							.getApplicationWindowToken(),
					InputMethodManager.HIDE_NOT_ALWAYS);

		}
		// InputMethodManager imm = (InputMethodManager) context
		// .getSystemService(Context.INPUT_METHOD_SERVICE);
		// imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);

	}


//       /**
//* 得到全局唯一UUID
//*/
//public static String getUUID(Context context){
//	String uuid="";
//	SharedPreferences mShare = getSysShare(context, "sysCacheMap");
//if(mShare != null){
//uuid = mShare.getString("uuid", "");
//}
//
//if(StringUtil.isEmpty(uuid)){
//uuid = UUID.randomUUID().toString();
//saveSysMap(context, "sysCacheMap", "uuid", uuid);
//}
//
//return uuid;
//}
}
